package com.hardroid.workload.ui.fragment;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.NumberPicker;
import android.widget.RadioButton;
import android.widget.Spinner;

import com.hardroid.workload.R;
import com.hardroid.workload.utils.Singleton;
import com.hardroid.workload.workcalc.Employer;
import com.hardroid.workload.workcalc.WorkUnit;
import com.hardroid.workload.workcalc.WorkUnit.TingkatKesibukan;

public class BebanPanelFragment extends Fragment implements
		OnCheckedChangeListener {

	public int unitId;
	public WorkUnit unit;

	private NumberPicker jamKerjaHariTinggiPicker;
	private NumberPicker jamKerjaHariRata2Picker;
	private NumberPicker jamKerjaHariRendahPicker;

	private Spinner tingkatKesibukanSaatAmbilDataSpinner;

	private NumberPicker hariKerjaBulanTinggiPicker;
	private NumberPicker hariKerjaBulanRata2Picker;
	private NumberPicker hariKerjaBulanRendahPicker;

	private RadioButton kesibukanRelatifTinggiTahun[];
	private RadioButton kesibukanRelatifRata2Tahun[];
	private RadioButton kesibukanRelatifRendahTahun[];
	private Spinner respondenSpinner;
	private TextView atasanPekerjaan;
	private TextView atasanNama;
	private TextView atasanUnit;

	public BebanPanelFragment() {
		// TODO Auto-generated constructor stub
		unitId = 0;
		if (!Singleton.currentProject.lWorkUnit.isEmpty())
			unit = Singleton.currentProject.lWorkUnit.get(0);
		else
			unit = new WorkUnit();
	}

	public BebanPanelFragment(int id) {
		// TODO Auto-generated constructor stub
		this.unitId = id;
		if (!Singleton.currentProject.lWorkUnit.isEmpty())
			unit = Singleton.currentProject.lWorkUnit.get(unitId);
		else
			unit = new WorkUnit();
	}

	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		return inflater
				.inflate(R.layout.fragment_beban_panel, container, false);
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {
		super.onActivityCreated(savedInstanceState);
		// initialize all object in view
		kesibukanRelatifRata2Tahun = new RadioButton[12];
		kesibukanRelatifTinggiTahun = new RadioButton[12];
		kesibukanRelatifRendahTahun = new RadioButton[12];

		kesibukanRelatifRata2Tahun[0] = (RadioButton) getView().findViewById(
				R.id.beban_januari_rata2);
		kesibukanRelatifRata2Tahun[1] = (RadioButton) getView().findViewById(
				R.id.beban_februari_rata2);
		kesibukanRelatifRata2Tahun[2] = (RadioButton) getView().findViewById(
				R.id.beban_maret_rata2);
		kesibukanRelatifRata2Tahun[3] = (RadioButton) getView().findViewById(
				R.id.beban_april_rata2);
		kesibukanRelatifRata2Tahun[4] = (RadioButton) getView().findViewById(
				R.id.beban_mei_rata2);
		kesibukanRelatifRata2Tahun[5] = (RadioButton) getView().findViewById(
				R.id.beban_juni_rata2);
		kesibukanRelatifRata2Tahun[6] = (RadioButton) getView().findViewById(
				R.id.beban_juli_rata2);
		kesibukanRelatifRata2Tahun[7] = (RadioButton) getView().findViewById(
				R.id.beban_agustus_rata2);
		kesibukanRelatifRata2Tahun[8] = (RadioButton) getView().findViewById(
				R.id.beban_september_rata2);
		kesibukanRelatifRata2Tahun[9] = (RadioButton) getView().findViewById(
				R.id.beban_oktober_rata2);
		kesibukanRelatifRata2Tahun[10] = (RadioButton) getView().findViewById(
				R.id.beban_november_rata2);
		kesibukanRelatifRata2Tahun[11] = (RadioButton) getView().findViewById(
				R.id.beban_desember_rata2);

		kesibukanRelatifTinggiTahun[0] = (RadioButton) getView().findViewById(
				R.id.beban_januari_tinggi);
		kesibukanRelatifTinggiTahun[1] = (RadioButton) getView().findViewById(
				R.id.beban_februari_tinggi);
		kesibukanRelatifTinggiTahun[2] = (RadioButton) getView().findViewById(
				R.id.beban_maret_tinggi);
		kesibukanRelatifTinggiTahun[3] = (RadioButton) getView().findViewById(
				R.id.beban_april_tinggi);
		kesibukanRelatifTinggiTahun[4] = (RadioButton) getView().findViewById(
				R.id.beban_mei_tinggi);
		kesibukanRelatifTinggiTahun[5] = (RadioButton) getView().findViewById(
				R.id.beban_juni_tinggi);
		kesibukanRelatifTinggiTahun[6] = (RadioButton) getView().findViewById(
				R.id.beban_juli_tinggi);
		kesibukanRelatifTinggiTahun[7] = (RadioButton) getView().findViewById(
				R.id.beban_agustus_tinggi);
		kesibukanRelatifTinggiTahun[8] = (RadioButton) getView().findViewById(
				R.id.beban_september_tinggi);
		kesibukanRelatifTinggiTahun[9] = (RadioButton) getView().findViewById(
				R.id.beban_oktober_tinggi);
		kesibukanRelatifTinggiTahun[10] = (RadioButton) getView().findViewById(
				R.id.beban_november_tinggi);
		kesibukanRelatifTinggiTahun[11] = (RadioButton) getView().findViewById(
				R.id.beban_desember_tinggi);

		kesibukanRelatifRendahTahun[0] = (RadioButton) getView().findViewById(
				R.id.beban_januari_rendah);
		kesibukanRelatifRendahTahun[1] = (RadioButton) getView().findViewById(
				R.id.beban_februari_rendah);
		kesibukanRelatifRendahTahun[2] = (RadioButton) getView().findViewById(
				R.id.beban_maret_rendah);
		kesibukanRelatifRendahTahun[3] = (RadioButton) getView().findViewById(
				R.id.beban_april_rendah);
		kesibukanRelatifRendahTahun[4] = (RadioButton) getView().findViewById(
				R.id.beban_mei_rendah);
		kesibukanRelatifRendahTahun[5] = (RadioButton) getView().findViewById(
				R.id.beban_juni_rendah);
		kesibukanRelatifRendahTahun[6] = (RadioButton) getView().findViewById(
				R.id.beban_juli_rendah);
		kesibukanRelatifRendahTahun[7] = (RadioButton) getView().findViewById(
				R.id.beban_agustus_rendah);
		kesibukanRelatifRendahTahun[8] = (RadioButton) getView().findViewById(
				R.id.beban_september_rendah);
		kesibukanRelatifRendahTahun[9] = (RadioButton) getView().findViewById(
				R.id.beban_oktober_rendah);
		kesibukanRelatifRendahTahun[10] = (RadioButton) getView().findViewById(
				R.id.beban_november_rendah);
		kesibukanRelatifRendahTahun[11] = (RadioButton) getView().findViewById(
				R.id.beban_desember_rendah);

		for (int i = 0; i < 12; i++) {
			kesibukanRelatifRata2Tahun[i].setOnCheckedChangeListener(this);
			kesibukanRelatifTinggiTahun[i].setOnCheckedChangeListener(this);
			kesibukanRelatifRendahTahun[i].setOnCheckedChangeListener(this);

		}

		tingkatKesibukanSaatAmbilDataSpinner = (Spinner) getView()
				.findViewById(R.id.beban_spinner_ambil_data);
		
		respondenSpinner= (Spinner) getView()
				.findViewById(R.id.beban_spinner_responden);
		
		atasanNama= (TextView) getView().findViewById(R.id.beban_atasan_nama);
		atasanPekerjaan= (TextView) getView().findViewById(R.id.beban_atasan_pekerjaan);
		atasanUnit= (TextView) getView().findViewById(R.id.beban_atasan_unit);
		
		

		jamKerjaHariRata2Picker = (NumberPicker) getView().findViewById(
				R.id.beban_jam_kerja_rata_rata);
		jamKerjaHariRendahPicker = (NumberPicker) getView().findViewById(
				R.id.beban_jam_kerja_rendah);
		jamKerjaHariTinggiPicker = (NumberPicker) getView().findViewById(
				R.id.beban_jam_kerja_tinggi);

		hariKerjaBulanRata2Picker = (NumberPicker) getView().findViewById(
				R.id.beban_bulan_rata_rata);
		hariKerjaBulanRendahPicker = (NumberPicker) getView().findViewById(
				R.id.beban_bulan_rendah);
		hariKerjaBulanTinggiPicker = (NumberPicker) getView().findViewById(
				R.id.beban_bulan_tinggi);

		jamKerjaHariRata2Picker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub

					}
				});

		jamKerjaHariRata2Picker.setMinValue(1);
		jamKerjaHariRendahPicker.setMinValue(1);
		jamKerjaHariTinggiPicker.setMinValue(1);

		jamKerjaHariRata2Picker.setMaxValue(24);
		jamKerjaHariRendahPicker.setMaxValue(24);
		jamKerjaHariTinggiPicker.setMaxValue(24);

		jamKerjaHariRata2Picker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub
						unit.setJamKerjaEfektifPerHariRata2(newVal);
					}
				});
		jamKerjaHariTinggiPicker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub
						unit.setJamKerjaEfektifPerHariTinggi(newVal);
					}
				});
		jamKerjaHariRendahPicker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub
						unit.setJamKerjaEfektifPerHariRendah(newVal);
					}
				});

		hariKerjaBulanRata2Picker.setMinValue(1);
		hariKerjaBulanRendahPicker.setMinValue(1);
		hariKerjaBulanTinggiPicker.setMinValue(1);

		hariKerjaBulanRata2Picker.setMaxValue(28);
		hariKerjaBulanRendahPicker.setMaxValue(28);
		hariKerjaBulanTinggiPicker.setMaxValue(28);

		hariKerjaBulanRata2Picker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub
						unit.setHariKerjaPerBulanRata2(newVal);
					}
				});
		hariKerjaBulanTinggiPicker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub
						unit.setHariKerjaPerBulanTinggi(newVal);
					}
				});
		hariKerjaBulanRendahPicker
				.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {

					@Override
					public void onValueChange(NumberPicker picker, int oldVal,
							int newVal) {
						// TODO Auto-generated method stub
						unit.setHariKerjaPerBulanRendah(newVal);
					}
				});

		ArrayAdapter<CharSequence> spinnerAdapter = ArrayAdapter
				.createFromResource(getActivity(),
						R.array.beban_saat_ambil_data,
						android.R.layout.simple_spinner_item);
		spinnerAdapter
				.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		tingkatKesibukanSaatAmbilDataSpinner.setAdapter(spinnerAdapter);
		
		ArrayAdapter<Employer> respondenAdapter = new ArrayAdapter<Employer>(getActivity(), android.R.layout.simple_spinner_item, unit.listOfRespondenDiBawahi);
		respondenSpinner.setAdapter(respondenAdapter);
		
		atasanNama.setText(unit.getNamaResponden());
		atasanPekerjaan.setText(unit.getJabatanResponden());
		atasanUnit.setText(unit.getUnitKerja());
		
		
		tingkatKesibukanSaatAmbilDataSpinner
				.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {

					@Override
					public void onItemSelected(AdapterView<?> arg0, View arg1,
							int arg2, long arg3) {
						unit.setTingkatKesibukanSaatAmbilData(arg2);
					}

					@Override
					public void onNothingSelected(AdapterView<?> arg0) {
					}

				});

		updateView();
	}

	private void updateView() {
		// update all views in this fragment
		for (int i =0; i<12;i++){
			if (unit.tingkatKesibukanTahun[i]== TingkatKesibukan.Rata2){
				kesibukanRelatifRata2Tahun[i].setChecked(true);	
			}else if (unit.tingkatKesibukanTahun[i]== TingkatKesibukan.Rendah){
				kesibukanRelatifRendahTahun[i].setChecked(true);
			}else if (unit.tingkatKesibukanTahun[i]== TingkatKesibukan.Tinggi){
				kesibukanRelatifTinggiTahun[i].setChecked(true);
			}
			
		}
		if (unit.getTingkatKesibukanSaatAmbilData()==TingkatKesibukan.Rata2){
			tingkatKesibukanSaatAmbilDataSpinner.setSelection(1);
		}else if (unit.getTingkatKesibukanSaatAmbilData()== TingkatKesibukan.Rendah){
			tingkatKesibukanSaatAmbilDataSpinner.setSelection(0);
		}else if (unit.getTingkatKesibukanSaatAmbilData()== TingkatKesibukan.Tinggi){
			tingkatKesibukanSaatAmbilDataSpinner.setSelection(2);
		}
		jamKerjaHariRata2Picker.setValue(unit.getJamKerjaEfektifPerHariRata2());
		jamKerjaHariTinggiPicker.setValue(unit.getJamKerjaEfektifPerHariTinggi());
		jamKerjaHariRendahPicker.setValue(unit.getJamKerjaEfektifPerHariRendah());
		
		hariKerjaBulanRata2Picker.setValue(unit.getHariKerjaPerBulanRata2());
		hariKerjaBulanTinggiPicker.setValue(unit.getHariKerjaPerBulanTinggi());
		hariKerjaBulanRendahPicker.setValue(unit.getHariKerjaPerBulanRendah());
		
	}

	public static BebanPanelFragment createInstance(int id) {
		BebanPanelFragment retval = new BebanPanelFragment(id);
		return retval;
	}

	@Override
	public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
		// TODO Auto-generated method stub
		for (int i=0;i<12;i++){
			if (buttonView == kesibukanRelatifRata2Tahun[i]){
				if (isChecked){
					unit.tingkatKesibukanTahun[i] = TingkatKesibukan.Rata2;
				}else{
					
				}
				break;
			}else if (buttonView == kesibukanRelatifRendahTahun[i]){
				if (isChecked){
					unit.tingkatKesibukanTahun[i] = TingkatKesibukan.Rendah;
				}else{
					
				}
				break;
			}else if (buttonView == kesibukanRelatifTinggiTahun[i]){
				if (isChecked){
					unit.tingkatKesibukanTahun[i] = TingkatKesibukan.Tinggi;
				}else{
					
				}
				break;
			}
				
		}
	}
}
